Secure Sockets Layer (SSL) and Transport Layer Security (TLS) are communications protocols that operate at the application layer of the Open Systems Interconnection (OSI) model to provide secure communications between a client and a server over the Internet. In a simple SSL or TLS handshake, the client begins by sending a ClientHello that includes the protocol version supported by the client as well as a random number generated at the client. The server then responds with a ServerHello message that includes the protocol version supported by the server along with a random number generated at the server. The server may then send its certificate including its public key for encryption, and then sends a ServerHelloDone message indicating that it is done with handshake negotiation.
The client may then respond with a ClientKeyExchange message containing a PreMasterSecret encrypted using the server's public key. The client and server may then use the exchanged random numbers and PreMasterSecret to compute a common, MasterSecret used to generate session keys for the communications session. Then, the client and server send each other a ChangeCipherSpec indicating that subsequent messages will be encrypted, and an encrypted Finished message. The server and client will attempt to decrypt each other's Finished message. If either attempt fails, the handshake fails and the connection is terminated. If both client and server are successful in decrypting the Finished message, the handshake is successful. The handshake may be modified if the client also has its own certificate and/or if the handshake is resuming a previous session. However, in the simple case described above, the full handshake generally includes at least two full protocol round trips before the handshake is complete and the client and server can start sending application data, thus adding a latency penalty of two network round trip times to establish a communications session.
To reduce this latency, a proposal has been submitted to the TLS working group of the Internet Engineering Task Force (IETF) to modify TLS and possibly SSL by incorporating a feature called False Start. This proposed modification enables the client to begin sending application data before it has received and verified the server's Finished message. In the scenario where an abbreviated handshake is employed to resume a previous session, the server begins sending application data before it has received and verified the client's Finished message. Thus, False Start reduces the latency by one round trip time. However, if a False Start capable client attempts a False Start handshake with a server that does not support False Start, the handshake will fail and the client will attempt another handshake using the standard, non-False Start protocol, incurring a substantial latency penalty.